/**
 * A utility to HexEncode a String 
 * @author: Darryl
 * @since: 2007/12/29
 */
class HexCodec {

    static final char[] digits = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f']

    /**
    * The byte[] returned by MessageDigest does not have a nice
    * textual representation, so some form of encoding is usually performed.
    *
    * This implementation follows the example of David Flanagan's book
    * "Java In A Nutshell", and converts a byte array into a String
    * of hex characters.
    *
    * Another popular alternative is to use a "Base64" encoding.
    */
    static encode = {byte[] aInput ->
//        byte[] aInput = str.getBytes()
        StringBuffer result = new StringBuffer();
        for (int idx = 0; idx < aInput.length; ++idx) {
            byte b = aInput[idx];
            result.append(digits[(b & 0xf0) >> 4]);
            result.append(digits[b & 0x0f]);
        }
        return result.toString();
    }
}